#ifndef __H__XMLMAN__H__
#define __H__XMLMAN__H__


#include "../CommDef/NDC300LHdef.h"
#include "xml.h"

#ifdef WIN32
#include "../NdkSet/Param_dev.h"
#endif

#ifdef __cplusplus
extern "C"{
#endif


///////////////////////////////////////////////////////////////////////////
//主函数部分


///////////////////////////////////////////////////////////////////////////
//构建部分
//////////////////////////////////////////////////////////////////////////

//函数功能		生成根结点
//name			[in]根结点名称
//返回值：		根结点指针，失败返回NULL
S_XMLItem	*Xml_MakeRoot(const char *name);


//函数功能		生成识别XML信息
//boot			[in]根结点
//param			[in]识别参数
//返回值：		成功返回1，失败返回0
int		Xml_MakeRecParamXml(S_XMLItem *root, const SRecParam *param);

//函数功能		依据给定的节点数据构建XML文件
//boot			[in]根结点
//param			[in]系统配置参数
//返回值：		成功返回1，失败返回0
int		Xml_MakeSysCfgXml(S_XMLItem *root,  XMLNode *node);


//函数功能		生成系统配置参数XML信息
//boot			[in]根结点
//param			[in]系统配置参数
//返回值：		成功返回1，失败返回0
int		Xml_MakeSystemConfigXml(S_XMLItem *root, const SSystemParam *param);

//函数功能		生成图像参数XML信息
//boot			[in]根结点
//param			[in]图像参数
//返回值：		成功返回1，失败返回0
int		Xml_MakeImageParamXml(S_XMLItem *root, const SImageParam *param);

//函数功能		生成调试信息参数XML信息
//boot			[in]根结点
//param			[in]图像参数
//返回值：		成功返回1，失败返回0
int		Xml_MakeDebugParamXml(S_XMLItem *root, const SUDPDebug *param);

//函数功能		生成侧装卡口参数XML信息
//boot			[in]根结点
//param			[in]图像参数
//返回值：		成功返回1，失败返回0
int		Xml_MakeSideParamXml(S_XMLItem *root, const s_side_param *param);

//函数功能		生成抓拍分辨率XML信息
//boot			[in]根结点
//width			[in]抓拍宽
//height		[in]抓拍高
//返回值：		成功返回1，失败返回0
int		Xml_MakeCapXml(S_XMLItem *root, int32 width, int32 height);

//函数功能		构建IP地址XML信息
//boot			[in]根结点
//ip			[in]ip地址
//mask			[in]子网掩码
//gate			[in]网关
//返回值：		成功返回1，失败返回0
int		Xml_MakeIPXml(S_XMLItem *root, const char *ip, const char *mask, const char *gate);
//函数功能		生成拍摄图片XML尾部信息
//boot			[in]根结点
//param			[in]尾部信息参数
//返回值：		成功返回1，失败返回0
int		Xml_MakeTailInfoXml(S_XMLItem *root, const STailInfo *param);

//函数功能		生成拍摄图片XML尾部信息
//boot			[in]根结点
//param			[in]测速信息参数
//返回值：		成功返回1，失败返回0
int		Xml_MakeSpeedInfoXml(S_XMLItem *root, const SSpeedInfo *param);

/* 生成视频流模式下图片的尾部信息
 * 返回值: 1-成功, 0-失败
 */
int		Xml_MakeTailInfoXml_VideoMode(S_XMLItem *root, const STailInfo_VideoMode *param);

//函数功能		生成当前图片参数的XML信息
//boot			[in]根结点
//param			[in]尾部信息参数
//返回值：		成功返回1，失败返回0
int		Xml_MakeCurPicParamXml(S_XMLItem *root, const SCurPicParam *param);

//函数功能		生成拍摄图片XML尾部信息
//boot			[in]根结点
//param			[in]TFTP尾部信息参数
//返回值：		成功返回1，失败返回0
int		Xml_MakeTFTPTailInfoXml(S_XMLItem *root, const STFTPTailInfo *param);

//函数功能		生成相机状态XML信息
//boot			[in]根结点
//param			[in]相机状态结构
//返回值：		成功返回1，失败返回0
int		Xml_MakeCammerStateInfoXml(S_XMLItem *root, const SCammerState *param);

//函数功能		生成XML的字符串
//string		[in]字符串首字址
//BufferLength	[in]缓冲区长度
//返回值：		成功返回字符串长度，失败返回-1
int		Xml_MakeXmlString(char *string, int BufferLength);

//函数功能		从XML中取出当前图片信息
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]TFTP尾部信息
//返回值：		成功返回1，失败返回0
int Xml_JieXiGetCurPicXML(const char *XMLString, const int32 xmlLen, SCurPicParam *param);

//函数功能		生成信息叠加XML
//boot			[in]根结点
//param			[in]相机状态结构
//返回值：		成功返回1，失败返回0
int		Xml_MakeOverParamXml(S_XMLItem *root, const s_dynamic_over_info *param);

//函数功能		从XML信息中解析出叠加参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]信息叠加参数参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiOverParamXml(const char *XMLString, const int32 len, s_dynamic_over_info *param);

//函数功能		从XML信息中解析出调试信息参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]相机状态信息
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiDebugParamXml(const char *XMLString, const int32 len, SUDPDebug *param);

//函数功能		从XML信息中解析出叠加参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]信息叠加参数参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiVideoOverTimeParamXml(const char *XMLString, const int32 len, s_dynamic_VideoOverInfo *param);

#ifdef WIN32
//函数功能		从XML信息中解析出IP配置参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//ip			[out]IP地址
//mask			[out]子网掩码
//gate			[out]网关
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_Net(const char *XMLString, int32 len, s_Net_Param *param);

//函数功能		从XML信息中解析出压缩参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_Enc(const char *XMLString, int32 len, s_Enc_Param *param);

//函数功能		从XML信息中解析出 NTP对时 参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_Ntp(const char *XMLString, int32 len, s_Ntp_Param *param);

//函数功能		从XML信息中解析出 叠加 参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_Blend(const char *XMLString, int32 len, s_blend_mess *param);

//函数功能		从XML信息中解析出 相机标识 参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_Cames(const char *XMLString, int32 len, s_Cames_Param *param);

//函数功能		从XML信息中解析出 FPGA节点 参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_FPGA(const char *XMLString, int32 len, s_FPGA_Param *param);

//函数功能		从XML信息中解析出 image 节点参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_ImageParam(const char *XMLString, int32 len, s_ImageParam_Param *param);

//函数功能		从XML信息中解析出 wan 节点参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_Wan(const char *XMLString, int32 len, s_Trans_Param *param);

//函数功能		从XML信息中解析出 Lan 节点参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_Lan(const char *XMLString, int32 len, s_Trans_Param *param);

//函数功能		从XML信息中解析出 mat1,mat2,mat3 节点参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_Max(const char *XMLString, int32 len, s_Mat_Param *param);

//函数功能		从XML信息中解析出 rslt 节点参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_rslt(const char *XMLString, int32 len, s_rslt_Param *param);

//函数功能		从XML信息中解析出 fbtl 节点参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_fbtl(const char *XMLString, int32 len, s_fbtl_Param *param);

//函数功能		从XML信息中解析出 imex 节点参数
//XMLString		[in]XML信息
//len			[in]XML信息长度
//param			[out]网络参数
//返回值：		成功返回1，失败返回0
int32	Xml_JieXiCamParam_imex(const char *XMLString, int32 len, s_imex_Param *param);
#endif
#ifdef __cplusplus
}
#endif
#endif
